From: Luca Bacci Date: Tue, 4 Jan 2022 09:44:54 +0000 (+0100) Subject: Use a GTK grab when showing a modal GtkFileChooserNativeWin32 X-Git-Tag: archive/raspbian/4.6.5+ds-1+rpi1~1^2~19^2~4^2~121^2 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=c138aaabf376d8a995a8275e2219f22b9580c48c;p=gtk4.git Use a GTK grab when showing a modal GtkFileChooserNativeWin32 --- diff --git a/gtk/gtkfilechoosernativewin32.c b/gtk/gtkfilechoosernativewin32.c index 505e0b07f0..bd08939e86 100644 --- a/gtk/gtkfilechoosernativewin32.c +++ b/gtk/gtkfilechoosernativewin32.c @@ -41,6 +41,7 @@ #include "gtktogglebutton.h" #include "gtkheaderbar.h" #include "gtklabel.h" +#include "gtkmain.h" #include "gtkfilefilterprivate.h" #include "gtknative.h" @@ -50,6 +51,9 @@ typedef struct { GtkFileChooserNative *self; + + GtkWidget *grab_widget; + IFileDialogEvents *events; HWND parent; @@ -318,6 +322,12 @@ filechooser_win32_thread_data_free (FilechooserWin32ThreadData *data) if (data->events) IFileDialogEvents_Release (data->events); + if (data->grab_widget) + { + gtk_grab_remove (data->grab_widget); + g_object_unref (data->grab_widget); + } + g_clear_object (&data->current_folder); g_clear_object (&data->current_file); g_free (data->current_name); @@ -969,6 +979,12 @@ gtk_file_chooser_native_win32_show (GtkFileChooserNative *self) return FALSE; } + if (data->modal) + { + data->grab_widget = g_object_ref_sink (gtk_label_new ("")); + gtk_grab_add (GTK_WIDGET (data->grab_widget)); + } + return TRUE; }